package com.jzo2o.market.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.market.enums.ActivityStatusEnum;
import com.jzo2o.market.model.domain.Activity;
import com.jzo2o.market.model.dto.request.ActivityPageQueryDTO;
import com.jzo2o.market.model.dto.request.ActivitySaveReqDTO;
import com.jzo2o.market.model.dto.request.SeizeCouponReqDTO;
import com.jzo2o.market.model.dto.response.ActivityInfoResDTO;
import com.jzo2o.market.model.dto.response.SeizeCouponInfoResDTO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 * @author itcast
 * @since 2023-09-16
 */
public interface IActivityService extends IService<Activity> {
    /**
     * 分页查询活动数据
     */
    PageResult<ActivityInfoResDTO> page(ActivityPageQueryDTO activityPageQueryDTO);

    /**
     * 查询活动详细数据
     */
    ActivityInfoResDTO getDetailById(Long id);

    /**
     * 获取缓存的活动信息
     * @param status 筛选的活动状态
     */
    List<SeizeCouponInfoResDTO> getCachedActivity(ActivityStatusEnum status);

    /**
     * 新增/插入活动信息
     */
    void saveOrUpdate(ActivitySaveReqDTO activitySaveReqDTO);

    /**
     * 撤销活动
     */
    void revoke(Long id);

    /**
     * 根据当前时间更新活动状态
     */
    void updateActivityStatus();

    /**
     * 缓存近1个月生效的活动信息
     */
    void cacheComingActivity();

    /**
     * 用户端进行抢卷操作
     */
    void seizeCoupon(SeizeCouponReqDTO seizeCouponReqDTO);
}